In a client-server environment, the client sometimes stores a local copy of the data that was retrieved from the server. For example, a Web client may store a local copy of a document that was retrieved from a central Web server. If access to the data takes place repeatedly over a short period of time, storing a copy of the data in local storage can reduce the data access time. The local storage is sometimes referred to as a cache. Caches generally are faster storage devices when compared with a centralized main storage device that is connected to a server.
Conventionally, when a client receives a request for a data entry, the client checks its cache first. If the requested entry exists in the cache and that entry is not too old, the entry is retrieved from the cache. If the entry does not exist in the cache, or the cache entry is too old, the client will go to the slower backing data store to request a cache update. The client will populate the cache and then return the newly updated result to the requester of the data entry. Waiting for a cached update from the slower back-end data store (e.g., a centralized main storage) can be time-consuming, especially for systems with a heavy load. As a result, the overall efficiency of the system can be reduced.